/**
 * @file 74HC595.h
 * @brief 74HC595封装驱动
 * @author wangh (wanghuan3037@fiberhome.com)
 * @version 1.0
 * @date 2020-10-22
 * @copyright Copyright (c) 2020  烽火通信
 */
#ifndef __74HC595_H
#define __74HC595_H 
#include "project_config.h"

#if DRV_74HC595_EN
#include <stdbool.h>
#include "bsp_gpio.h"

/**
 * @brief BL0939对象结构体
 */
typedef struct Hc595_s
{
    Gpio_t SCK;         ///< 数据输入时钟线
    Gpio_t RCK;         ///< 输出存储器锁存时钟线
    Gpio_t SI;          ///< 数据线
    bool IsInitialized; ///< 是否初始化
    uint8_t value;      ///< 当前移位寄存器值

} Hc595_t;

/**
 * @brief HC595初始化
 * @param  obj         HC595对象
 * @param  sck         数据输入时钟线
 * @param  rck         输出存储器锁存时钟线
 * @param  si          数据线
 * @return uint8_t SUCCESS：成功
 */
int8_t HC595_Init( Hc595_t *obj, PinNames sck, PinNames rck, PinNames si );

/**
 * @brief HC595去初始化
 * @param  obj         HC595对象
 */
void HC595_DeInit( Hc595_t *obj );

/**
 * @brief 74HC595发送一个字节
 * @param  obj         HC595对象
 * @param  byte        数据
 */
void HC595_SendByte( Hc595_t *obj, uint8_t byte );

/**
 * @brief 74HC595输出锁存
 */
void HC595_Load( Hc595_t *obj );


#endif  /* DRV_74HC595_EN */

#endif	 // __74HC595_H 

/*********** (C) COPYRIGHT 2020 FiberHome *****END OF FILE****/
